{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 07 - 控制混淆因素之外的考虑\n",
    "\n",
    "\n",
    "## 良好的控制\n",
    "\n",
    "我们已经看到向我们的回归模型添加额外的控制变量可以帮助识别因果效应。如果控制变量本身是一个混淆因素，将它添加到模型中不仅很好，而且是一项要求。当粗心大意的人看到这一点时，自然的反应是将他能测量的任何东西都扔进模型中。在当今的大数据世界中，这很容易超过 1000 个变量。事实证明，这不仅是不必要的，而且可能不利于因果识别。我们现在将注意力转向非混淆因素的控制。首先，让我们来看看好的案例。然后，我们将深入研究有问题控制案例。\n",
    "\n",
    "作为一个启发性的示例，假设您是一家金融科技公司债务催收团队的数据科学家。您的下一个任务是弄清楚发送电子邮件要求人们协商债务的影响。您的响应变量是迟到客户的付款金额。\n",
    "\n",
    "为了回答这个问题，您的团队从您的迟到客户群中随机选择了 5000 名客户进行随机测试。对于每个客户，您抛硬币，如果是正面，客户就会收到电子邮件；否则，客户为纳入对照组。通过改实验，您希望了解电子邮件催收所能产生的额外收入。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import warnings\n",
    "warnings.filterwarnings('ignore')\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "from scipy import stats\n",
    "from matplotlib import style\n",
    "import seaborn as sns\n",
    "from matplotlib import pyplot as plt\n",
    "import statsmodels.formula.api as smf\n",
    "import graphviz as gr\n",
    "\n",
    "style.use(\"fivethirtyeight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>payments</th>\n",
       "      <th>email</th>\n",
       "      <th>opened</th>\n",
       "      <th>agreement</th>\n",
       "      <th>credit_limit</th>\n",
       "      <th>risk_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>740</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2348.495260</td>\n",
       "      <td>0.666752</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>580</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>334.111969</td>\n",
       "      <td>0.207395</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>600</td>\n",
       "      <td>1</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1360.660722</td>\n",
       "      <td>0.550479</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>770</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1531.828576</td>\n",
       "      <td>0.560488</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>660</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>979.855647</td>\n",
       "      <td>0.455140</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   payments  email  opened  agreement  credit_limit  risk_score\n",
       "0       740      1     1.0        0.0   2348.495260    0.666752\n",
       "1       580      1     1.0        1.0    334.111969    0.207395\n",
       "2       600      1     1.0        1.0   1360.660722    0.550479\n",
       "3       770      0     0.0        0.0   1531.828576    0.560488\n",
       "4       660      0     0.0        0.0    979.855647    0.455140"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data = pd.read_csv(\"./data/collections_email.csv\")\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于数据是随机的，您知道均值的简单差异估计平均干预效果。换句话说，除了随机化之外，没有什么可以引起干预，因此潜在的结果与干预无关：\\\\((Y_0，Y_1 ) \\perp T \\\\)。\n",
    "\n",
    "$\n",
    "ATE = E[Y_i|T_i=1] - E[Y_i|T_i=0]\n",
    "$\n",
    "\n",
    "由于您很聪明，并且希望在估计值周围放置置信区间，因此使用线性回归。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Difference in means: -0.6202804021329484\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>  669.9764</td> <td>    2.061</td> <td>  325.116</td> <td> 0.000</td> <td>  665.937</td> <td>  674.016</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>email</th>     <td>   -0.6203</td> <td>    2.941</td> <td>   -0.211</td> <td> 0.833</td> <td>   -6.387</td> <td>    5.146</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"Difference in means:\",\n",
    "      data.query(\"email==1\")[\"payments\"].mean() - data.query(\"email==0\")[\"payments\"].mean())\n",
    "\n",
    "model = smf.ols('payments ~ email', data=data).fit()\n",
    "model.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可悲的是，估计的ATE为-0.62，这很奇怪。对于支付延迟的客户，发送电子邮件催收反而使得债务的偿付低于平均水平？尽管如此，P值仍然如此之高，以至于这可能没有任何意义。你现在应该做什么？回到你的团队，把尾巴夹在两腿之间，说实验没有定论，你需要更多的数据？没那么快。\n",
    "\n",
    "请注意您的数据如何包含其他一些有趣的列。例如，\"credit_limit\"表示客户在支付延迟之前的信用额度。\"risk_score\"对应于客户在发送电子邮件之前的估计风险。认为信用额度和风险可能是很好的付款预测因素是有道理的。但这有什么用呢？\n",
    "\n",
    "首先，让我们了解为什么即使存在，我们也无法在干预中找到统计显著性。可能就像在这种情况下一样，干预对结果的影响很小。如果你仔细想想，让人们偿还债务的原因，总的来说，是收款部门无法控制的因素。人们偿还债务是因为他们找到了一份新工作，管理他们的财务，收入等等。在统计方面，我们可以说**付款的可变性更多地由电子邮件**以外的其他因素解释。\n",
    "\n",
    "为了直观地理解它，我们可以根据电子邮件这个干预变量绘制付款。我还用红色绘制了上面模型的拟合线。为了帮助可视化，我在电子邮件变量中添加了一点噪音，这样它就不会在 0 或 1 处被粉碎。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(\"email\", \"payments\", \n",
    "                alpha=0.8,\n",
    "                data=data.assign(email=data[\"email\"] + np.random.normal(0, 0.01, size=len(data[\"email\"]))))\n",
    "plt.plot(np.linspace(-0.2, 1.2), model.params[0] + np.linspace(-1, 2) * model.params[1], c=\"C1\")\n",
    "plt.xlabel(\"Email\")\n",
    "plt.ylabel(\"Payments\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们可以看到单个干预组中的付款差异有多大。从视觉上看，看起来两组都从400以下到1000。如果电子邮件的影响是5.00或10.00 R $，难怪很难在所有可变性中找到它。\n",
    "\n",
    "\n",
    "幸运的是，回归可以帮助我们降低这种方差。诀窍是使用其他控制变量。**如果变量是结果的良好预测因子，它将解释其许多差异**。如果风险和信用额度是付款的良好预测因素，我们可以控制它们，以便更容易地发现电子邮件对付款的影响。如果我们记得回归是如何工作的，这有一个直观的解释。向回归添加额外的变量意味着在查看干预时保持它们不变。因此，推理是，如果我们看一下类似的风险水平和信用额度，响应变量\"付款\"的方差应该更小。或者，换句话说，如果风险和信用额度可以很好地预测付款，则具有相似风险和信用额度的客户也应该具有相似的付款水平，因此差异较小。\n",
    "\n",
    "![img](./data/img/beyond-conf/y-pred.png)\n",
    "\n",
    "\n",
    "为了证明这一点，让我们采用将回归分为2个步骤的方式，从而将上述因素影响逐一剔除。首先，我们将使用额外的控制变量，信用额度和风险评分，对干预变量：发送电子邮件，以及结果变量，付款，分别进行回归。其次，我们将在步骤1中获得的付款回归模型的残差和干预变量回归模型的残差进行回归。（这纯粹是教学法，在实践中你不需要经历所有的麻烦）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_email = smf.ols('email ~ credit_limit + risk_score', data=data).fit()\n",
    "model_payments = smf.ols('payments ~ credit_limit + risk_score', data=data).fit()\n",
    "\n",
    "residuals = pd.DataFrame(dict(res_payments=model_payments.resid, res_email=model_email.resid))\n",
    "\n",
    "model_treatment = smf.ols('res_payments ~ res_email', data=residuals).fit()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "这将降低因变量的方差。通过对信用额度和风险的回归支付并获得此模型的残差，我们正在创建一个新的因变量，其可变性比原始变量小得多。最后一个模型还发现了具有有效标准误差估计值的 ATE。\n",
    "\n",
    "只是出于好奇，我们还可以检查预测治疗的模型不应该能够降低它的方差。这是因为电子邮件在设计上是随机的，所以没有什么可以预测它。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Payments Variance 10807.61241599994\n",
      "Payments Residual Variance 5652.453558466197\n",
      "Email Variance 0.24991536000001294\n",
      "Email Residual Variance 0.24918421069820038\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td> 4.143e-13</td> <td>    1.063</td> <td>  3.9e-13</td> <td> 1.000</td> <td>   -2.084</td> <td>    2.084</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>res_email</th> <td>    4.4304</td> <td>    2.129</td> <td>    2.080</td> <td> 0.038</td> <td>    0.256</td> <td>    8.605</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "print(\"Payments Variance\", np.var(data[\"payments\"]))\n",
    "print(\"Payments Residual Variance\", np.var(residuals[\"res_payments\"]))\n",
    "\n",
    "print(\"Email Variance\", np.var(data[\"email\"]))\n",
    "print(\"Email Residual Variance\", np.var(residuals[\"res_email\"]))\n",
    "\n",
    "model_treatment.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "请注意付款的差异如何从 10807 变为 5652。一旦我们控制了风险和信用额度，我们已经将其降低了近一半。另请注意，我们没有设法减少治疗电子邮件的可变性。这是有道理的，因为风险和信用额度不能预测电子邮件（根据随机性的定义，什么都不可以预测）。\n",
    "\n",
    "现在，我们看到一些更合理的东西。这一新的估计告诉我们，我们应该期望收到电子邮件的客户平均比对照组多支付4.4雷亚尔。现在，此估计值在统计上与零不同。我们还可以想象每个对照组中的方差现在如何降低。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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V7Jo0aJGH7MpOJfP/PzzzxkzZgydOnUiISGBgQMH8sUXX3i0Wbp0qc/7pby8vLmHck5j+eabb3z28+eff/Zot2rVKpKSkoiLiyMpKYnVq1c39zDOaRy+rvXIyEgsFovext+xNiXbt2/n9ttvp3v37kRGRrJ06dIG37N//36GDx+O2Wyme/fuzJkzB62WHmVjzocwij6YMWMGq1evZuHChXzxxRcUFxczfvx4nE5nne/ZtGkThw4d0v+2bNmCJEmMHj3ao12XLl082jXnD9r5jMOfPr711lu8++67zJkzh6+//prY2FjGjBlDcXFxixnHtm3bmDRpEhs2bODzzz/HYDAwevRozp4969Guf//+HmNdtmxZk/V7xYoVPPnkkzz22GNs3bqVvn37MnbsWDIyMny2P378OOPGjaNv375s3bqVRx99lCeeeIJVq1ad9zEvxDi2b99OcnIyn376KVu3bmXw4MH8/ve/97qOTCaTx3d/6NAhgoKCmm0c5zMWN99++61HPzt16qS/tnv3bv74xz8yduxYvvnmG8aOHcs999zDnj17Wsw4XnnlFa/vukOHDl6/Tw2NtakpLS2lR48evPLKKwQHBzfYvqioiDFjxhAXF8fXX3/NK6+8wvz583nnnXf0No09HyJPsRaFhYV07tyZd999V1/lZWZm0rNnT9LS0hg4cKBfx5k7dy5vv/02Bw8exGQyAa5V2Oeff87OnTubrf9uznccDfVR0zS6devGn/70J6ZNmwZAWVkZXbp04cUXX2TixIktYhy1KSkpITExkaVLlzJs2DDANXvOz8/nk08+adI+uxk4cCC/+c1vePvtt/XnevfuzahRo3juuee82j/33HOsXr2aH374QX9uypQpHDx4kK+++uq8jnkhxuGLm2++meuuu46XXnoJcK0Un3jiiQZX/E3NuY7lm2++4Xe/+x1Hjx4lJibG5zEnTpzI2bNn+eyzz/TnRo0aRZs2bVi4cGHTD4LGn5Nvv/2WW265hQ0bNpCUlAT4N9bmpF27drz66qvcdddddbZZuHAhzz//PD///LNuRF977TUWLVrEgQMHkCSp0edDrBRrsXfvXux2OzfffLP+XEJCAl27dmXXrl1+HUPTND766CPGjx+vG0Q3x48fp3v37lxxxRX88Y9/5Pjx403ZfZ3GjKO+Pqanp5OTk+Nx3ODgYK6//nq/v59faxw1KSkpQVVVIiMjPZ7fuXMnnTt35uqrr+bhhx/m9OnTTdLvyspK9u7d69FvcBmHuvq9e/dur/YDBw7kv//9L3a7/byO2Via6jNLSkq8vvuysjJ++9vf0qNHD8aPH8///ve/JulzXTRmLP3796dr167ceuutbN261eO17777zud5a8nnZMmSJXTv3l03iDWpb6wXmt27d3Pdddd5rCoHDhzIqVOnSE9PBxp/PoRRrEVubi6KonjNlGJjY8nNzfXrGJs2bSI9PZ0//OEPHs/36dOHBQsWsGzZMt5++21ycnIYMmQI+fn5TdZ/N+c7job6mJOTox/nXI57vjTF+QB48skn6dmzJ3379tWfGzRoEO+//z6rVq1i1qxZfP/999x6661UVFQ0ut95eXk4nc5z+p5yc3N9tnc4HOTl5Z3XMRtLU3zmBx98QFZWFuPHj9ef69KlC++88w4ff/wx//jHPwgMDOSWW27h6NGjTdr/mpzPWMxmM2+88QYfffQRH330EV26dGHUqFFs375db5OTk9OqzklhYSGrVq3i7rvv9njen7FeaOq6R9yvQePPxyVTT3HWrFnMnTu33jb1bcZqmoYkSX591pIlS+jduzdXXHGFx/ODBw/2eNynTx969erFxx9/zEMPPeTXsZt7HP72sfYxzuX7gV/3fDz11FN8++23rF+/HkVR9Odvu+02/f/f/OY39OrVi549e7JhwwZuvfVWv47dEOf6Pflq736+5v/ncsym4Hw/c9WqVTz77LMsXLiQxMRE/fm+fft6TFCSkpK48cYb+dvf/sarr77adB33wbmMpUuXLnTp0kV/3LdvX06cOMH8+fPp16/feR2zqTjfz/z0009xOp3cfvvtHs/7O9YLTX33SH1t/D0fl4xRfOCBBzwiQX2RkJDAd999h9PpJC8vjzZt2uivnTlzhuuvv77Bzzl9+jRffPFFgz/4AKGhoXTr1o1jx441PIAqfq1x1NXH+Ph4wDUrS0hI8Dhu7dlZSxjHjBkzWLFiBatXr6ZDhw71tm3bti0Wi+WczkddxMTEoCiK1+y0vu8pLi7OZ3uDwUB0dDSapp3zMRvL+YzDzapVq/jzn//M+++/z/Dhw+ttqygKvXr1apLvvi4aM5aaXH311axYsUJ/HB8f32rOCbgm7bfeeitRUVENtq091gtNXfcIVK8YG3s+Lhn3aUxMDJdffnm9fyaTiV69emE0Gtm0aZP+3pMnT3Lo0CGf/vfaLF26lMDAQFJSUhpsW15ezuHDh3VD05LGUVcfrVYr8fHxHsctLy9n586d53TcX2Mc06dPJy0tjc8//9yv1Je8vDxOnTp1TuejLgICAujVq5dHv8HlWq+r33379mXz5s1e7a+66iqMRuN5HbOxnO9nrly5kvvvv58FCxYwatSoBj9H0zT279/fJN99XTTV9/fjjz969POaa65pFecEYM+ePfzf//2fl+u0LmqP9ULTt29fdu7c6ZG6s2nTJtq2bYvVagUafz6UJ5988vkm6/FFQFBQENnZ2XzwwQf89re/pbCwkKlTpxIeHs4LL7yALLvmEddccw3gmkm50TSNBx98kKFDh/oMdX7mmWcICAhAVVWOHDnC448/zrFjx5g3bx4REREtYhwN9VGSJJxOJ/PmzaNz5844nU6efvppcnJyePPNNwkMDGwR45g2bRr//ve/+fDDD0lISKC0tJTS0lLA9aNSUlLCzJkzCQ0NxeFw8OOPPzJlyhScTievvfZak4wjLCyM2bNnYzabCQoK4rXXXmPHjh288847REREcP/997NmzRp+97vfAXDZZZfx5ptvcvr0adq3b88XX3zB66+/zqxZs+jWrZtfx2wOznUcy5cv57777uOFF15gyJAh+ndvt9v1AIlXXnmFiooKZFnmxIkTvPjii2zatIk33njDI3fuQo9lwYIF5OTkoCgKOTk5LFiwgH/+85/MmjWLrl27Ai4Pw8svv4zRaCQmJoYlS5awdOlS3nrrrWYby7mOw83s2bMpLS1l1qxZXu5Ef8ba1JSUlHDw4EFycnL46KOP6NGjB+Hh4VRWVhIREcELL7zAG2+8wR133AFAp06dWLx4MT/++CNdunRh586dPPvsszzyyCO60Wvs+bhk3Kfnwssvv4yiKEycOJHy8nKSk5N5//33PfajDh8+TF5ensf7vvnmG44dO8YHH3zg87hZWVnce++9uiuwT58+fPXVVx57LRd6HP708S9/+QtlZWU8/vjjFBQU6C6WsLCwFjOOf/zjHwBeq5Tp06czY8YMFEXhwIED/Pvf/6awsJD4+HhuvPFGFi9e3GTjSElJIT8/n9dee42cnBy6d+/Op59+qn+XmZmZHu07dOjAp59+ylNPPcWiRYswm83MmTPHYwwNHbM5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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.scatterplot(\"res_email\", \"res_payments\", data=residuals)\n",
    "plt.plot(np.linspace(-0.7, 1), model_treatment.params[0] + np.linspace(-1, 2) * model_treatment.params[1], c=\"C1\")\n",
    "plt.xlabel(\"Email Residuals\")\n",
    "plt.ylabel(\"Payments Residuals\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "正如我所说，我们这样做是出于教学原因。在实践中，您只需将控件与处理一起添加到回归模型中，估计值将完全相同。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "        <td></td>          <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>    <td>  490.8653</td> <td>    9.715</td> <td>   50.527</td> <td> 0.000</td> <td>  471.820</td> <td>  509.911</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>email</th>        <td>    4.4304</td> <td>    2.130</td> <td>    2.080</td> <td> 0.038</td> <td>    0.255</td> <td>    8.606</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>credit_limit</th> <td>    0.1511</td> <td>    0.008</td> <td>   18.833</td> <td> 0.000</td> <td>    0.135</td> <td>    0.167</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>risk_score</th>   <td>   -8.0516</td> <td>   38.424</td> <td>   -0.210</td> <td> 0.834</td> <td>  -83.379</td> <td>   67.276</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_2 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()\n",
    "model_2.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "总而言之，每当我们有一个控件可以很好地预测结果时，即使它不是混杂因素，将其添加到我们的模型中也是一个好主意。它有助于降低我们治疗效果估计的方差。这是一张因果图的情况图片。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\r\n",
       " -->\r\n",
       "<!-- Title: %3 Pages: 1 -->\r\n",
       "<svg width=\"436pt\" height=\"116pt\"\r\n",
       " viewBox=\"0.00 0.00 435.75 116.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 112)\">\r\n",
       "<title>%3</title>\r\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-112 431.747,-112 431.747,4 -4,4\"/>\r\n",
       "<!-- X -->\r\n",
       "<g id=\"node1\" class=\"node\"><title>X</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\r\n",
       "</g>\r\n",
       "<!-- Y -->\r\n",
       "<g id=\"node2\" class=\"node\"><title>Y</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"63\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"63\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\r\n",
       "</g>\r\n",
       "<!-- X&#45;&gt;Y -->\r\n",
       "<g id=\"edge1\" class=\"edge\"><title>X&#45;&gt;Y</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M35.3496,-72.7646C39.7115,-64.2831 45.1469,-53.7144 50.0413,-44.1974\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"53.2346,-45.6409 54.6957,-35.1473 47.0096,-42.4395 53.2346,-45.6409\"/>\r\n",
       "</g>\r\n",
       "<!-- T -->\r\n",
       "<g id=\"node3\" class=\"node\"><title>T</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"gold\" cx=\"99\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">T</text>\r\n",
       "</g>\r\n",
       "<!-- T&#45;&gt;Y -->\r\n",
       "<g id=\"edge2\" class=\"edge\"><title>T&#45;&gt;Y</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M90.6504,-72.7646C86.2885,-64.2831 80.8531,-53.7144 75.9587,-44.1974\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"78.9904,-42.4395 71.3043,-35.1473 72.7654,-45.6409 78.9904,-42.4395\"/>\r\n",
       "</g>\r\n",
       "<!-- 电子邮件 -->\r\n",
       "<g id=\"node4\" class=\"node\"><title>电子邮件</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"gold\" cx=\"188\" cy=\"-90\" rx=\"44.393\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"188\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">电子邮件</text>\r\n",
       "</g>\r\n",
       "<!-- 付款 -->\r\n",
       "<g id=\"node6\" class=\"node\"><title>付款</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"294\" cy=\"-18\" rx=\"27.0966\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"294\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">付款</text>\r\n",
       "</g>\r\n",
       "<!-- 电子邮件&#45;&gt;付款 -->\r\n",
       "<g id=\"edge5\" class=\"edge\"><title>电子邮件&#45;&gt;付款</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M210.221,-74.3257C226.661,-63.4694 249.146,-48.6203 266.684,-37.0389\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"268.93,-39.7502 275.346,-31.3189 265.072,-33.909 268.93,-39.7502\"/>\r\n",
       "</g>\r\n",
       "<!-- 信用额度 -->\r\n",
       "<g id=\"node5\" class=\"node\"><title>信用额度</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"294\" cy=\"-90\" rx=\"44.393\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"294\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">信用额度</text>\r\n",
       "</g>\r\n",
       "<!-- 信用额度&#45;&gt;付款 -->\r\n",
       "<g id=\"edge3\" class=\"edge\"><title>信用额度&#45;&gt;付款</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M294,-71.6966C294,-63.9827 294,-54.7125 294,-46.1124\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"297.5,-46.1043 294,-36.1043 290.5,-46.1044 297.5,-46.1043\"/>\r\n",
       "</g>\r\n",
       "<!-- 风险分 -->\r\n",
       "<g id=\"node7\" class=\"node\"><title>风险分</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"392\" cy=\"-90\" rx=\"35.9954\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"392\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">风险分</text>\r\n",
       "</g>\r\n",
       "<!-- 风险分&#45;&gt;付款 -->\r\n",
       "<g id=\"edge4\" class=\"edge\"><title>风险分&#45;&gt;付款</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M372.168,-74.8345C357.256,-64.1829 336.677,-49.4836 320.377,-37.8409\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"321.997,-34.6966 311.825,-31.7323 317.928,-40.3928 321.997,-34.6966\"/>\r\n",
       "</g>\r\n",
       "</g>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1f94d4ce2c8>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = gr.Digraph()\n",
    "g.edge(\"X\", \"Y\"), g.edge(\"T\", \"Y\")\n",
    "g.node(\"T\", color=\"gold\")\n",
    "\n",
    "g.node(\"电子邮件\", color=\"gold\")\n",
    "g.edge(\"信用额度\", \"付款\")\n",
    "g.edge(\"风险分\", \"付款\")\n",
    "g.edge(\"电子邮件\", \"付款\")\n",
    "\n",
    "g"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 主要是有害的对照\n",
    "\n",
    "作为第二个启发用的示例，让我们考虑一个2家医院都在进行的药物测试场景。他们都在对一种治疗某种疾病的新药进行随机试验。感兴趣的结果是住院天数。如果治疗有效，它将减少患者在医院停留的天数。对于其中一家医院，有关随机治疗的策略是将其给予90%的患者，而10%的患者接受安慰剂。另一家医院有不同的策略：它随机给10%的患者提供药物，90%的患者服用安慰剂。您还被告知，提供90%的真正药物和10%安慰剂的医院通常会得到更严重的疾病病例进行治疗。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>hospital</th>\n",
       "      <th>treatment</th>\n",
       "      <th>severity</th>\n",
       "      <th>days</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>29.686618</td>\n",
       "      <td>82</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>20.050340</td>\n",
       "      <td>57</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>20.302399</td>\n",
       "      <td>49</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>10.603118</td>\n",
       "      <td>44</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>8.332793</td>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   hospital  treatment   severity  days\n",
       "0         1          1  29.686618    82\n",
       "1         1          1  20.050340    57\n",
       "2         1          1  20.302399    49\n",
       "3         0          0  10.603118    44\n",
       "4         0          0   8.332793    15"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hospital = pd.read_csv(\"./data/hospital_treatment.csv\")\n",
    "hospital.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于正在处理的数据是随机的，因此您的第一本能是简单地对治疗结果进行回归。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   33.2667</td> <td>    2.662</td> <td>   12.498</td> <td> 0.000</td> <td>   27.968</td> <td>   38.566</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>treatment</th> <td>   14.1533</td> <td>    3.367</td> <td>    4.204</td> <td> 0.000</td> <td>    7.451</td> <td>   20.856</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hosp_1 = smf.ols('days ~ treatment', data=hospital).fit()\n",
    "hosp_1.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "但是你会发现一些违反直觉的结果。治疗为何会增加住院天数？答案在于我们正在运行2个不同的实验。严重程度与在医院的天数较多呈正相关，并且由于病例较重的医院也给予更多的药物，因此药物与在医院的天数呈正相关。当我们一起看两家医院时，我们有 \\\\(E[Y_0|T=0]>E[Y_0|T=1]\\\\) ，也就是说，平均而言，未治疗者的潜在结果高于接受治疗者，因为在病情较轻的医院中，未治疗的病例较多。换句话说，严重程度起到了混杂因素的作用，决定了患者去的医院，从而决定了接受药物的可能性。\n",
    "\n",
    "有两种方法可以解决这个问题。第一个破坏了使用两家医院数据的目的，即简单地单独查看每家医院的ATE。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   30.4074</td> <td>    2.868</td> <td>   10.602</td> <td> 0.000</td> <td>   24.523</td> <td>   36.292</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>treatment</th> <td>  -11.4074</td> <td>   10.921</td> <td>   -1.045</td> <td> 0.306</td> <td>  -33.816</td> <td>   11.001</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hosp_2 = smf.ols('days ~ treatment', data=hospital.query(\"hospital==0\")).fit()\n",
    "hosp_2.summary().tables[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   59.0000</td> <td>    6.747</td> <td>    8.745</td> <td> 0.000</td> <td>   45.442</td> <td>   72.558</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>treatment</th> <td>  -10.3958</td> <td>    6.955</td> <td>   -1.495</td> <td> 0.141</td> <td>  -24.371</td> <td>    3.580</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hosp_3 = smf.ols('days ~ treatment', data=hospital.query(\"hospital==1\")).fit()\n",
    "hosp_3.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在本例中，我们确实得到了 ATE 的直观结果。看起来现在这种药物实际上正在降低在医院的天数。但是，由于我们单独查看每家医院，因此没有足够的数据点。因此，我们无法找到具有统计学意义的结果。\n",
    "\n",
    "另一种利用回归的方法则是通过将疾病严重程度这个混淆变量包含在模型中来控制其影响。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   11.6641</td> <td>    2.000</td> <td>    5.832</td> <td> 0.000</td> <td>    7.681</td> <td>   15.647</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>treatment</th> <td>   -7.5912</td> <td>    2.269</td> <td>   -3.345</td> <td> 0.001</td> <td>  -12.110</td> <td>   -3.073</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>severity</th>  <td>    2.2741</td> <td>    0.154</td> <td>   14.793</td> <td> 0.000</td> <td>    1.968</td> <td>    2.580</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hosp_4 = smf.ols('days ~ treatment + severity', data=hospital).fit()\n",
    "hosp_4.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来出现的问题是，我们是否也应该将医院纳入模型？毕竟，我们知道医院直接影响治疗，对吗？嗯，这是真的，但是一旦我们控制了严重程度，医院就不再与住院天数的结果相关。我们知道，要成为混淆变量，改变量必须同时引起治疗和结果。在我们这种情况下，我们有一个仅导致治疗的变量。\n",
    "\n",
    "但也许控制它会降低方差，对吧？好吧，又不是真的。为了让控制变量能降低方差，它必须是结果的良好预测因子，而不是治疗的预测因子，这里的情况就是如此。\n",
    "\n",
    "不过，我们可能还是想控制它。毕竟也没什么损失...真是这样吗？"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "      <td></td>         <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th> <td>   11.0111</td> <td>    2.118</td> <td>    5.198</td> <td> 0.000</td> <td>    6.792</td> <td>   15.230</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>treatment</th> <td>   -5.0945</td> <td>    3.492</td> <td>   -1.459</td> <td> 0.149</td> <td>  -12.049</td> <td>    1.861</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>severity</th>  <td>    2.3865</td> <td>    0.195</td> <td>   12.251</td> <td> 0.000</td> <td>    1.999</td> <td>    2.774</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>hospital</th>  <td>   -4.1535</td> <td>    4.413</td> <td>   -0.941</td> <td> 0.350</td> <td>  -12.943</td> <td>    4.636</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hosp_5 = smf.ols('days ~ treatment + severity + hospital', data=hospital).fit()\n",
    "hosp_5.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "令人惊讶的是，它会带来不对的结果！\n",
    "\n",
    "![img](./data/img/beyond-conf/shocked.png)\n",
    "\n",
    "在严重性之上添加医院作为对照，为我们的 ATE 估计器引入了更多差异。怎么可能？答案在于回归系数标准误的公式。\n",
    "\n",
    "$\n",
    "\\hat{\\sigma}^2 = \\dfrac{1}{n-2} \\sum( y_i - \\hat{y}_i )^2\n",
    "$\n",
    "\n",
    "$\n",
    "\\text{Var}(\\hat{\\beta}_2) = \\dfrac{\\sigma^2}{\\sum(x_i - \\bar{x})^2}\n",
    "$\n",
    "\n",
    "从这个公式可以看出，标准误差与变量\\\\(X\\\\)的方差成反比。这意味着，如果 \\\\(X\\\\) 变化不大，则很难估计其对结果的影响。这也具有直观意义。把它发挥到极致，假装你想估计一种药物的效果，所以你对 10000 人进行了测试，但只有 1 人得到了治疗。这将使找到 ATE 变得非常困难，我们将不得不依靠将一个人与其他人进行比较。另一种说法是，我们需要在治疗中进行很多可变性，以便更容易发现其影响。\n",
    "\n",
    "至于为什么在模型中包括医院会增加我们估计的误差，这是因为它是治疗而不是结果的良好预测指标（一旦我们控制了严重程度）。所以，通过预测治疗，它有效地使它的方差更低！我们这里也可以通过将上面的回归划分为 2 个步骤的方式来看清这一点。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "        <td></td>           <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>     <td> 2.498e-14</td> <td>    0.827</td> <td> 3.02e-14</td> <td> 1.000</td> <td>   -1.646</td> <td>    1.646</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>res_treatment</th> <td>   -5.0945</td> <td>    3.447</td> <td>   -1.478</td> <td> 0.143</td> <td>  -11.957</td> <td>    1.768</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model_treatment = smf.ols('treatment ~ severity + hospital', data=hospital).fit()\n",
    "model_days = smf.ols('days ~ severity + hospital', data=hospital).fit()\n",
    "\n",
    "residuals = pd.DataFrame(dict(res_days=model_days.resid, res_treatment=model_treatment.resid))\n",
    "\n",
    "model_treatment = smf.ols('res_days ~ res_treatment', data=residuals).fit()\n",
    "\n",
    "model_treatment.summary().tables[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Treatment Variance 0.234375\n",
      "Treatment Residual Variance 0.057529091872119076\n"
     ]
    }
   ],
   "source": [
    "print(\"Treatment Variance\", np.var(hospital[\"treatment\"]))\n",
    "print(\"Treatment Residual Variance\", np.var(residuals[\"res_treatment\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "还有，不要只相信我的话！ 您可以检查上面的 SE 公式是否正确："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SE of the Coeficient: 3.4469737674869028\n"
     ]
    }
   ],
   "source": [
    "sigma_hat = sum(model_treatment.resid**2)/(len(model_treatment.resid)-2)\n",
    "var = sigma_hat/sum((residuals[\"res_treatment\"] - residuals[\"res_treatment\"].mean())**2)\n",
    "print(\"SE of the Coeficient:\", np.sqrt(var))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "所以最重要的是，我们应该添加与治疗和结果（混杂因素）相关的控制，如上面模型中的严重程度。 我们还应该添加可以很好地预测结果的控制，即使它们不是混淆因子，因为它们降低了我们估计的方差。 但是，我们应该**不**添加只是治疗的良好预测因子的对照，因为它们会增加我们估计的方差。\n",
    "\n",
    "这是一张用因果图说明这种情况的图片。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\r\n",
       " -->\r\n",
       "<!-- Title: %3 Pages: 1 -->\r\n",
       "<svg width=\"191pt\" height=\"260pt\"\r\n",
       " viewBox=\"0.00 0.00 191.20 260.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 256)\">\r\n",
       "<title>%3</title>\r\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-256 187.196,-256 187.196,4 -4,4\"/>\r\n",
       "<!-- X -->\r\n",
       "<g id=\"node1\" class=\"node\"><title>X</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\r\n",
       "</g>\r\n",
       "<!-- T -->\r\n",
       "<g id=\"node2\" class=\"node\"><title>T</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"gold\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">T</text>\r\n",
       "</g>\r\n",
       "<!-- X&#45;&gt;T -->\r\n",
       "<g id=\"edge1\" class=\"edge\"><title>X&#45;&gt;T</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M27,-215.697C27,-207.983 27,-198.712 27,-190.112\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"30.5001,-190.104 27,-180.104 23.5001,-190.104 30.5001,-190.104\"/>\r\n",
       "</g>\r\n",
       "<!-- Y -->\r\n",
       "<g id=\"node3\" class=\"node\"><title>Y</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\r\n",
       "</g>\r\n",
       "<!-- T&#45;&gt;Y -->\r\n",
       "<g id=\"edge2\" class=\"edge\"><title>T&#45;&gt;Y</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M27,-143.697C27,-135.983 27,-126.712 27,-118.112\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"30.5001,-118.104 27,-108.104 23.5001,-118.104 30.5001,-118.104\"/>\r\n",
       "</g>\r\n",
       "<!-- 治疗 -->\r\n",
       "<g id=\"node4\" class=\"node\"><title>治疗</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"gold\" cx=\"107\" cy=\"-90\" rx=\"27.0966\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"107\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">治疗</text>\r\n",
       "</g>\r\n",
       "<!-- 天数 -->\r\n",
       "<g id=\"node7\" class=\"node\"><title>天数</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"134\" cy=\"-18\" rx=\"27.0966\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"134\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">天数</text>\r\n",
       "</g>\r\n",
       "<!-- 治疗&#45;&gt;天数 -->\r\n",
       "<g id=\"edge6\" class=\"edge\"><title>治疗&#45;&gt;天数</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M113.399,-72.411C116.514,-64.3352 120.334,-54.4312 123.835,-45.3547\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"127.126,-46.5458 127.46,-35.9562 120.595,-44.0267 127.126,-46.5458\"/>\r\n",
       "</g>\r\n",
       "<!-- 严重程度 -->\r\n",
       "<g id=\"node5\" class=\"node\"><title>严重程度</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"139\" cy=\"-234\" rx=\"44.393\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"139\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">严重程度</text>\r\n",
       "</g>\r\n",
       "<!-- 医院 -->\r\n",
       "<g id=\"node6\" class=\"node\"><title>医院</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"107\" cy=\"-162\" rx=\"27.0966\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"107\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">医院</text>\r\n",
       "</g>\r\n",
       "<!-- 严重程度&#45;&gt;医院 -->\r\n",
       "<g id=\"edge3\" class=\"edge\"><title>严重程度&#45;&gt;医院</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M131.254,-216.055C127.559,-207.973 123.055,-198.121 118.937,-189.112\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"122.016,-187.429 114.675,-179.789 115.649,-190.339 122.016,-187.429\"/>\r\n",
       "</g>\r\n",
       "<!-- 严重程度&#45;&gt;天数 -->\r\n",
       "<g id=\"edge4\" class=\"edge\"><title>严重程度&#45;&gt;天数</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M140.672,-215.571C143.233,-185.993 147.392,-124.1 143,-72 142.283,-63.4991 140.931,-54.3119 139.488,-46.0122\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"142.914,-45.2892 137.654,-36.0925 136.031,-46.5623 142.914,-45.2892\"/>\r\n",
       "</g>\r\n",
       "<!-- 医院&#45;&gt;治疗 -->\r\n",
       "<g id=\"edge5\" class=\"edge\"><title>医院&#45;&gt;治疗</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M107,-143.697C107,-135.983 107,-126.712 107,-118.112\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"110.5,-118.104 107,-108.104 103.5,-118.104 110.5,-118.104\"/>\r\n",
       "</g>\r\n",
       "</g>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1f94de73448>"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = gr.Digraph()\n",
    "\n",
    "g.edge(\"X\", \"T\"), g.edge(\"T\", \"Y\")\n",
    "g.node(\"T\", color=\"gold\")\n",
    "\n",
    "g.node(\"治疗\", color=\"gold\")\n",
    "g.edge(\"严重程度\", \"医院\")\n",
    "g.edge(\"严重程度\", \"天数\")\n",
    "g.edge(\"医院\", \"治疗\")\n",
    "g.edge(\"治疗\", \"天数\")\n",
    "\n",
    "g"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 不良控制 - 选择偏差\n",
    "\n",
    "让我们回到债务催收电子邮件的案例。 请记住，电子邮件是随机分配给客户的。 我们已经解释了什么是 `信用额度` 和 `风险分` 。 现在，让我们看看剩下的变量。 `打开` 是客户是否打开电子邮件的虚拟变量。 如果客户在收到电子邮件后联系收款部门协商他们的债务，`支付协议` 是另一个虚拟变量。 您认为以下哪个模型更合适？ 第一个是带有处理变量加上 `信用额度` 和 `风险分` 的模型； 第二个添加了 `打开` 和 `支付协议` 虚拟变量。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "        <td></td>          <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>    <td>  490.8653</td> <td>    9.715</td> <td>   50.527</td> <td> 0.000</td> <td>  471.820</td> <td>  509.911</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>email</th>        <td>    4.4304</td> <td>    2.130</td> <td>    2.080</td> <td> 0.038</td> <td>    0.255</td> <td>    8.606</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>credit_limit</th> <td>    0.1511</td> <td>    0.008</td> <td>   18.833</td> <td> 0.000</td> <td>    0.135</td> <td>    0.167</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>risk_score</th>   <td>   -8.0516</td> <td>   38.424</td> <td>   -0.210</td> <td> 0.834</td> <td>  -83.379</td> <td>   67.276</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "email_1 = smf.ols('payments ~ email + credit_limit + risk_score', data=data).fit()\n",
    "email_1.summary().tables[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<table class=\"simpletable\">\n",
       "<tr>\n",
       "        <td></td>          <th>coef</th>     <th>std err</th>      <th>t</th>      <th>P>|t|</th>  <th>[0.025</th>    <th>0.975]</th>  \n",
       "</tr>\n",
       "<tr>\n",
       "  <th>Intercept</th>    <td>  488.4416</td> <td>    9.716</td> <td>   50.272</td> <td> 0.000</td> <td>  469.394</td> <td>  507.489</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>email</th>        <td>   -1.6095</td> <td>    2.724</td> <td>   -0.591</td> <td> 0.555</td> <td>   -6.949</td> <td>    3.730</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>credit_limit</th> <td>    0.1507</td> <td>    0.008</td> <td>   18.809</td> <td> 0.000</td> <td>    0.135</td> <td>    0.166</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>risk_score</th>   <td>   -2.0929</td> <td>   38.375</td> <td>   -0.055</td> <td> 0.957</td> <td>  -77.325</td> <td>   73.139</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>opened</th>       <td>    3.9808</td> <td>    3.914</td> <td>    1.017</td> <td> 0.309</td> <td>   -3.692</td> <td>   11.654</td>\n",
       "</tr>\n",
       "<tr>\n",
       "  <th>agreement</th>    <td>   11.7093</td> <td>    4.166</td> <td>    2.811</td> <td> 0.005</td> <td>    3.542</td> <td>   19.876</td>\n",
       "</tr>\n",
       "</table>"
      ],
      "text/plain": [
       "<class 'statsmodels.iolib.table.SimpleTable'>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "email_2 = smf.ols('payments ~ email + credit_limit + risk_score + opened + agreement', data=data).fit()\n",
    "email_2.summary().tables[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "虽然第一个模型发现电子邮件的统计显着结果，但第二个模型没有。但也许第二个是正确的模型并且对电子邮件没有影响。毕竟，这个模型控制的因素更多，所以它应该更健壮吧？现在您可能知道情况并非如此。剩下的就是弄清楚是什么。\n",
    "\n",
    "我们知道我们必须添加混淆变量。导致治疗和结果的变量。我们也知道添加能够很好地预测结果的控制变量是一个好主意。这是非必需的，但很值得做的事。我们也知道添加仅预测治疗的控制变量是一个坏主意。同样，这不是致命的问题，但最好避免。那么`打开`和`支付协议`是怎样的控件呢？事实证明，它们都不是上述情况。\n",
    "\n",
    "如果你仔细想想，`打开`和`支付协议`肯定与电子邮件相关。毕竟，如果您没有收到电子邮件，您将无法打开它，而且我们还说过，该协议仅考虑在电子邮件发送后发生的重新谈判。但是**他们不会产生电子邮件！相反，它们是由它引起的！**\n",
    "\n",
    "每当我需要了解我正在处理的变量类型时，我总是喜欢考虑它们的因果图。让我们在这里做这些："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\r\n",
       " -->\r\n",
       "<!-- Title: %3 Pages: 1 -->\r\n",
       "<svg width=\"292pt\" height=\"260pt\"\r\n",
       " viewBox=\"0.00 0.00 291.94 260.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 256)\">\r\n",
       "<title>%3</title>\r\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-256 287.943,-256 287.943,4 -4,4\"/>\r\n",
       "<!-- 电子邮件 -->\r\n",
       "<g id=\"node1\" class=\"node\"><title>电子邮件</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"44.1961\" cy=\"-234\" rx=\"44.393\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"44.1961\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">电子邮件</text>\r\n",
       "</g>\r\n",
       "<!-- 支付 -->\r\n",
       "<g id=\"node2\" class=\"node\"><title>支付</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"186.196\" cy=\"-18\" rx=\"27.0966\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"186.196\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">支付</text>\r\n",
       "</g>\r\n",
       "<!-- 电子邮件&#45;&gt;支付 -->\r\n",
       "<g id=\"edge1\" class=\"edge\"><title>电子邮件&#45;&gt;支付</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M40.8301,-215.975C35.5742,-184.245 29.0773,-115.366 61.1961,-72 81.9999,-43.9112 120.644,-30.5801 149.48,-24.3346\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"150.474,-27.7063 159.609,-22.34 149.121,-20.8382 150.474,-27.7063\"/>\r\n",
       "</g>\r\n",
       "<!-- 打开 -->\r\n",
       "<g id=\"node3\" class=\"node\"><title>打开</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"150.196\" cy=\"-162\" rx=\"27.0966\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"150.196\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">打开</text>\r\n",
       "</g>\r\n",
       "<!-- 电子邮件&#45;&gt;打开 -->\r\n",
       "<g id=\"edge2\" class=\"edge\"><title>电子邮件&#45;&gt;打开</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M66.4172,-218.326C82.8567,-207.469 105.342,-192.62 122.88,-181.039\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"125.126,-183.75 131.542,-175.319 121.268,-177.909 125.126,-183.75\"/>\r\n",
       "</g>\r\n",
       "<!-- 支付协议 -->\r\n",
       "<g id=\"node4\" class=\"node\"><title>支付协议</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"114.196\" cy=\"-90\" rx=\"44.393\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"114.196\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">支付协议</text>\r\n",
       "</g>\r\n",
       "<!-- 电子邮件&#45;&gt;支付协议 -->\r\n",
       "<g id=\"edge3\" class=\"edge\"><title>电子邮件&#45;&gt;支付协议</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M52.5009,-216.153C64.6047,-191.6 87.1954,-145.773 101.424,-116.908\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"104.62,-118.342 105.902,-107.825 98.3412,-115.247 104.62,-118.342\"/>\r\n",
       "</g>\r\n",
       "<!-- 打开&#45;&gt;支付 -->\r\n",
       "<g id=\"edge4\" class=\"edge\"><title>打开&#45;&gt;支付</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M156.147,-143.943C159.629,-133.616 163.962,-120.139 167.196,-108 172.652,-87.5182 177.608,-64.0616 181.089,-46.3729\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"184.597,-46.665 183.057,-36.1827 177.724,-45.3374 184.597,-46.665\"/>\r\n",
       "</g>\r\n",
       "<!-- 打开&#45;&gt;支付协议 -->\r\n",
       "<g id=\"edge5\" class=\"edge\"><title>打开&#45;&gt;支付协议</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M141.846,-144.765C137.653,-136.611 132.468,-126.529 127.725,-117.307\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"130.689,-115.416 123.003,-108.124 124.464,-118.618 130.689,-115.416\"/>\r\n",
       "</g>\r\n",
       "<!-- 支付协议&#45;&gt;支付 -->\r\n",
       "<g id=\"edge6\" class=\"edge\"><title>支付协议&#45;&gt;支付</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M130.534,-73.1159C140.416,-63.508 153.15,-51.1277 163.944,-40.6338\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"166.662,-42.873 171.392,-33.3927 161.782,-37.854 166.662,-42.873\"/>\r\n",
       "</g>\r\n",
       "<!-- 信用额度 -->\r\n",
       "<g id=\"node5\" class=\"node\"><title>信用额度</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"150.196\" cy=\"-234\" rx=\"44.393\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"150.196\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">信用额度</text>\r\n",
       "</g>\r\n",
       "<!-- 信用额度&#45;&gt;支付 -->\r\n",
       "<g id=\"edge7\" class=\"edge\"><title>信用额度&#45;&gt;支付</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M165.057,-216.707C173.011,-206.859 182.011,-193.609 186.196,-180 200.147,-134.634 195.59,-78.6157 190.941,-46.0362\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"194.367,-45.2869 189.387,-35.9353 187.448,-46.3512 194.367,-45.2869\"/>\r\n",
       "</g>\r\n",
       "<!-- 信用额度&#45;&gt;打开 -->\r\n",
       "<g id=\"edge8\" class=\"edge\"><title>信用额度&#45;&gt;打开</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M150.196,-215.697C150.196,-207.983 150.196,-198.712 150.196,-190.112\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"153.696,-190.104 150.196,-180.104 146.696,-190.104 153.696,-190.104\"/>\r\n",
       "</g>\r\n",
       "<!-- 信用额度&#45;&gt;支付协议 -->\r\n",
       "<g id=\"edge9\" class=\"edge\"><title>信用额度&#45;&gt;支付协议</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M135.335,-216.707C127.381,-206.859 118.381,-193.609 114.196,-180 108.037,-159.97 108.404,-136.184 110.11,-118.244\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"113.603,-118.505 111.265,-108.172 106.649,-117.708 113.603,-118.505\"/>\r\n",
       "</g>\r\n",
       "<!-- 风险分 -->\r\n",
       "<g id=\"node6\" class=\"node\"><title>风险分</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"248.196\" cy=\"-234\" rx=\"35.9954\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"248.196\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">风险分</text>\r\n",
       "</g>\r\n",
       "<!-- 风险分&#45;&gt;支付 -->\r\n",
       "<g id=\"edge10\" class=\"edge\"><title>风险分&#45;&gt;支付</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M245.041,-215.807C239.361,-186.062 226.386,-123.263 209.196,-72 206.138,-62.8793 202.143,-53.1539 198.342,-44.5569\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"201.516,-43.0806 194.194,-35.4225 195.142,-45.9749 201.516,-43.0806\"/>\r\n",
       "</g>\r\n",
       "<!-- 风险分&#45;&gt;打开 -->\r\n",
       "<g id=\"edge11\" class=\"edge\"><title>风险分&#45;&gt;打开</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M228.364,-218.834C213.452,-208.183 192.873,-193.484 176.573,-181.841\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"178.193,-178.697 168.021,-175.732 174.124,-184.393 178.193,-178.697\"/>\r\n",
       "</g>\r\n",
       "<!-- 风险分&#45;&gt;支付协议 -->\r\n",
       "<g id=\"edge12\" class=\"edge\"><title>风险分&#45;&gt;支付协议</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M238.883,-216.376C227.839,-197.536 208.141,-166.525 186.196,-144 174.29,-131.779 159.334,-120.282 146.142,-111.139\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"148.023,-108.186 137.778,-105.488 144.104,-113.987 148.023,-108.186\"/>\r\n",
       "</g>\r\n",
       "</g>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x1f94f3e5348>"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = gr.Digraph()\n",
    "\n",
    "g.edge(\"电子邮件\", \"支付\")\n",
    "g.edge(\"电子邮件\", \"打开\")\n",
    "g.edge(\"电子邮件\", \"支付协议\")\n",
    "g.edge(\"打开\", \"支付\")\n",
    "g.edge(\"打开\", \"支付协议\")\n",
    "g.edge(\"支付协议\", \"支付\")\n",
    "\n",
    "g.edge(\"信用额度\", \"支付\")\n",
    "g.edge(\"信用额度\", \"打开\")\n",
    "g.edge(\"信用额度\", \"支付协议\")\n",
    "g.edge(\"风险分\", \"支付\")\n",
    "g.edge(\"风险分\", \"打开\")\n",
    "g.edge(\"风险分\", \"支付协议\")\n",
    "\n",
    "g"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们知道没有什么会导致电子邮件，因为它是随机设计的。我们知道（或者至少我们有充分的理由相信）信用额度和风险会导致付款。我们还认为电子邮件会导致付款。至于`打开`，我们认为它确实引起了付款。直觉上，打开催收电子邮件的人更愿意谈判和偿还债务。我们还认为，`打开`会导致达成协议，其原因与导致付款的原因相同。此外，我们知道“opened”是由电子邮件引起的，我们有理由相信不同风险和信用额度的人对电子邮件的打开率不同，因此信用额度和风险也会导致打开。至于协议，我们也认为是`打开`造成的。如果我们考虑支付响应变量，我们可以认为是漏斗的结果：\n",
    "\n",
    "$\n",
    "电子邮件 -> 打开 -> 协议 -> 付款\n",
    "$\n",
    "\n",
    "我们也认为不同程度的风险和线路有不同的达成一致的倾向，所以我们将它们标记为也引起一致。至于电子邮件和协议，我们可以说有些人只是阅读了电子邮件的主题，这使他们更有可能达成协议。关键是电子邮件也可以在不通过 `打开` 的情况下达成一致。\n",
    "\n",
    "我们在这张图中注意到，打开和协议都在从电子邮件到付款的因果路径中。所以，如果我们用回归来控制它们，我们会说“这是电子邮件的效果，同时保持`打开`和`支付协议` 不变”。然而，两者都是电子邮件因果效应的一部分，所以我们不想固定它们。相反，我们可以争辩说电子邮件增加付款正是因为它提高了协议率。如果我们修复了这些变量，我们就会从电子邮件变量中消除一些真正的影响。\n",
    "\n",
    "有了潜在的结果符号，我们可以说，由于随机化\\\\(E[Y_0|T=0] = E[Y_0|T=1]\\\\)。然而，即使是随机化，当我们控制一致性时，治疗和控制也不再具有可比性。事实上，通过一些直观的思考，我们甚至可以猜测它们的不同之处：\n",
    "\n",
    "\n",
    "$\n",
    "E[Y_0|T=0，协议=0] > E[Y_0|T=1，协议=0]\n",
    "$\n",
    "\n",
    "$\n",
    "E[Y_0|T=0, 协议=1] > E[Y_0|T=1, 协议=1]\n",
    "$\n",
    "\n",
    "第一个等式明确表明，我们认为没有电子邮件和协议的人比有电子邮件和没有协议的人更好。那是因为，如果治疗有积极的效果，那些没有达成协议**即使在收到电子邮件之后**可能比那些也没有达成协议但也没有达成协议的人在付款方面更糟糕没有得到电子邮件的额外奖励。至于第二个等式，那些即使没有接受治疗也同意的人可能比那些同意但有电子邮件额外激励的人要好。\n",
    "\n",
    "当您第一次阅读它时（这是给我的），这可能会非常令人困惑，但请确保您理解它。如有必要，请再次阅读。然后，可以对打开的变量进行类似的推理。尝试自己制作。\n",
    "\n",
    "这种偏见是如此普遍，它有自己的名字。混杂是由于无法控制一个共同原因而产生的偏差，**选择偏差是指我们控制一个共同的结果或从原因到结果的路径之间的变量。** 根据经验，始终包括混杂因素和可以很好地预测模型中 \\\\(Y\\\\) 的变量。始终排除仅 \\\\(T\\\\)、治疗和结果之间的中介或治疗和结果的共同影响的良好预测变量的变量。\n",
    "\n",
    "![img](./data/img/beyond-conf/selection.png)\n",
    "\n",
    "选择偏差是如此普遍，以至于即使是随机化也无法解决它。更好的是，它经常被不明智的人引入，即使是在随机数据中！发现和避免选择偏差需要更多的练习而不是技巧。通常，它们出现在一些所谓的聪明想法之下，使其更难被发现。以下是我遇到的一些选择偏向的例子：\n",
    "\n",
    "    1. 在尝试估计收款策略对付款的影响时，添加用于支付全部债务的虚拟变量。\n",
    "    2. 在尝试估计教育对收入的影响时控制白领和蓝领工作\n",
    "    3. 估计利率对贷款久期影响时的转换控制\n",
    "    4. 在估计孩子对婚外情的影响时控制婚姻幸福\n",
    "    5. 将支付建模 E[Payments] 分解为一个预测是否会发生支付的二元模型和另一个预测会发生多少支付的模型：E[Payments|Payments>0]*P(Payments>0)\n",
    "    \n",
    "所有这些想法值得注意的是它们听起来多么合理。 选择偏差常常如此。 让这成为一个警告。 事实上，我自己也曾多次掉入上面的陷阱，我才知道它们有多糟糕。 特别是最后一个，值得进一步解释，因为它看起来很聪明，让很多数据科学家措手不及。 它是如此普遍以至于它有自己的名字：**The Bad COP**！\n",
    "\n",
    "### 糟糕的 COP\n",
    "\n",
    "情况是这样的。 您有一个想要预测的连续变量，但其分布在零时被过度表示。 例如，如果您想对消费者支出进行建模，您将得到类似伽马分布的东西，但有很多零。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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HgEtIiIVR5GBlJyczKFDh4yfzz//HIvFwgMPPADAunXrGD9+PGPGjGHbtm107NiRQYMGuTwobMKECbz//vssW7aMjRs3curUKYYMGXLZxzmLiMjNp8hAqlevHjabzfj55JNP8PDwMAJpwYIFPPTQQzz22GO0aNGC2bNnY7PZWL58OQAnTpzgH//4B9OnT6d79+60a9eORYsW8fXXXxf6THsREbk5XdMcktPp5B//+AdDhgyhRo0anDt3jn379hESEuLSLiQkxHgk8759+/jjjz9c2jRq1IgWLVoU+thmERG5OV3TE2OTk5PJyMjgkUceAS48M/78+fNYrVaXdlarlaysLACysrKoXLkyXl5el21zOSW5yavDjhqwo2TzVHu7/Fai7Su6in6TXXlS7UpG9Ss+M9fOz8/viuuvKZBWrFjBnXfeWeAZ8Zc+CtjpdBb6eOBrbVNU56+ohGFU4v1XcOnp6Tf18ZeEalcyql/xVfTaXfUpu19++YWNGzfy2GOPGcu8vLyoXLlygZFOdna2MWry9vbm/Pnz5OTkXLaNiIjIVQfSqlWrqFatGv379zeWVa1alXbt2pGcnOzSNjk5mcDAQADatWvHLbfc4tLm6NGjHDp0yGgjIiJyVafsnE4nK1eupH///nh4eLise+qppxg+fDgBAQEEBgayfPlyfv75ZyIiIgCoXbs2jzzyCFOmTMFqtVKnTh0mTZpE69at6datW6kfkIiIVExXFUjbt2/nyJEjLFmypMC6/v378+uvvzJ79mwyMzNp2bIlq1evxm63G21eeuklKleuTEREBGfPnuUvf/kLCxcupHLlyqV3JCIiUqHdsI8w93yj5Bc1OCIalkJPKqaKPjlanlS7klH9iq+i107fZSciIqagQBIREVNQIImIiCkokERExBQUSCIiYgoKJBERMQUFkoiImIICSURETEGBJCIipqBAEhERU1AgiYiIKSiQRETEFBRIIiJiCgokERExBQWSiIiYggJJRERMQYEkIiKmoEASERFTUCCJiIgpKJBERMQUFEgiImIKVxVIP//8MyNGjOC2227DZrMRGBjIjh07jPVOp5O4uDj8/f2pX78+YWFhHDx40OU1HA4HUVFR2O127HY7UVFROByO0j0aERGpsIoMJIfDQZ8+fXA6naxevZqUlBRmzZqF1Wo12iQkJLBgwQLi4+PZunUr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SrD8v+YvvTKsXbt22Gw2li9fzpkzZ4zl+/fvJzk5md69e5faX/T9+/cnLy/vspeD5+TkFPu1d+7cyblz5wos/+KLL/j1118LnHbLy8tj6dKlBX6vXr06Xbp0uW797d27N3l5eSxatMhleWJi4jW/ltxYNEKSMpV/78+gQYPo2rUrAwcO5M477zS+qWHt2rXUrVuXKVOmABAREcH69esJDw9nwIABHDt2jDfeeAN/f3+Xuai//e1v/Prrr/zlL3+hYcOGHDt2jCVLllC/fn3j0u477riDSpUqMW/ePE6cOIGbmxsBAQE0adKEF198kWHDhtGnTx+GDBnCyZMnWbx4MbVq1WLixImldvzBwcEMHz6cBQsW8NVXX9GzZ09q1KhBRkYGH3zwAY888ggxMTHFeu1XXnmF//znP/Tt25fbb7+dKlWqcPDgQd566y3c3NwK3MNks9lYuHAhP/74Iy1btuTDDz9k+/btTJw4EU9Pz+vW39DQUDp37kxcXBw//vgjbdu2JTk5+Yb+Sie5OgokKXPt27dn9+7dvPbaa2zatIm1a9fidDpp1qwZERERLldfde3alfj4eF599VUmTpyIv78/S5cuZfXq1ezYscNoN3jwYFauXMkbb7yBw+HA29ubXr16ERsba5xquvXWW5k/fz7z589n1KhRnD9/ngULFtCkSRMGDhyIm5sbc+fOZcaMGVStWpUuXbowdepUmjRpUqrHHx8fT7t27Vi2bBlxcXFUqlSJBg0a0KNHD+Py8OJ45plnWLt2LTt27GDdunWcPn3aqENMTAy33367S/tatWqxfPlynn32Wd566y3jD4FLA6a0+2uxWHjrrbd47rnnWL9+Pe+++y5du3ZlzZo1hd4sLTcPi8PhKHzWVkRuWGFhYWRlZbF3797y7oqIQXNIIiJiCgokERExBQWSiIiYguaQRETEFDRCEhERU1AgiYiIKSiQRETEFBRIIiJiCgokERExBQWSiIiYwv8HB5s63gS2PmsAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(np.concatenate([\n",
    "    np.random.gamma(5, 50, 1000), \n",
    "    np.zeros(700)\n",
    "]), bins=20)\n",
    "plt.xlabel(\"Customer Spend\")\n",
    "plt.title(\"Distribution Customer Spend\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "当数据科学家看到这一点时，他脑海中浮现的第一个想法是将建模分解为 2 个步骤。首先是参与度，即\\\\(Y > 0\\\\)的概率。在我们的支出示例中，这将建模客户是否决定支出。第二部分为那些决定参与的人建模 \\\\(Y\\\\)。它是正数条件效应。在我们的案例中，这将是客户在决定要花费任何东西后花费的金额。如果我们想估计处理 \\\\(T\\\\) 对支出的影响，它看起来像这样：\n",
    " \n",
    "$\n",
    "E[Y_i|T_i] = E[Y_i|Y_i>0, T_i]P(Y_i>0|T_i)\n",
    "$\n",
    " \n",
    "参与模型没有任何问题\\\\(P(Y_i>0|T_i)\\\\)。事实上，如果 \\\\(T\\\\) 是随机分配的，它将捕获由于处理而增加的支出概率。另外，上面的分解没有任何问题。根据总概率定律，这在数学上是正确的。\n",
    " \n",
    "问题在于估算 COP 部分。 **即使在随机分配下也会有偏差**。在直观的层面上，认为某些单位只是因为没有得到处理而为零并不疯狂。处理会导致他们**不**为零。另一方面，有些单位从不为零。治疗可能会增加他们的结果，但即使没有它，他们也不会为零。现在，关键是要了解这两种类型的单位没有可比性。与那些没有接受治疗的零相比，那些从不为零的人具有较高的 \\\\(Y_0\\\\) 。事实上，对于后者，\\\\(Y_0=0\\\\)。\n",
    " \n",
    "知道这一点，如果我们删除零，我们将在处理组和对照组上保留从不为零。但是我们将从控制中删除那些通过处理从零变为非零的。这将使处理和控制不再具有可比性，因为控制将只包含那些从不为零且具有更高 \\\\(Y_0\\\\) 的单元，而处理将包含两种类型的单位。\n",
    " \n",
    "既然我们对问题有了直观的认识，那我们就从数学的角度来检查一下。来看一下，我们来分解一下治疗效果。在随机分配下，它等于均值差\n",
    " \n",
    "$$\n",
    "\\begin{align*}\n",
    "&E[Y_i|T_i=1] - E[Y_i|T_i=0]\\\\\n",
    "&=E[Y_i|Y_i>0, T_i=1]P(Y_i>0|T_i=1) - E[Y_i|Y_i>0, T_i=0]P(Y_i>0|T_i=0)\\\\\n",
    "&=\\underbrace{\\{P(Y_i>0|T_i=1) - P(Y_i>0|T_i=0)\\}}_{参与 \\ 效果} * E[Y_i|Y_i>0, T_i=1] \\\\\n",
    "&+\\underbrace{\\{E[Y_i|Y_i>0, T_i=1] - E[Y_i|Y_i>0, T_i=0]\\}}_{COP \\ Effect} * P(Y_i>0|T_i= 0)\n",
    "\\end{align*}\n",
    "$$\n",
    " \n",
    "最后一个等式来自加减 \\\\(E[Y_i|Y_i>0, T_i=1]P(Y_i>0|T_i=0)\\\\) 并重新排列项。这意味着平均值的差异由两部分组成：首先，它是结果 \\\\(y\\\\) 为正的概率差异。这被称为参与效应，因为它衡量客户参与消费的可能性的增加。其次，这是以参与为条件的结果的差异，即 COP 效应。到现在为止还挺好。这没有任何问题。这是一个数学真理。当我们尝试分别估计每个部分时，问题就来了\n",
    " \n",
    "如果我们进一步分析 COP 效应，这将变得更加明显。\n",
    " \n",
    "$$\n",
    "\\begin{align*}\n",
    "E[Y_i|Y_i>0, T_i=1] - E[Y_i|Y_i>0, T_i=0]&=E[Y_{i1}|Y_{i1}>0]-E[Y_{i0}|Y_ {i0}>0] \\\\\n",
    "&=\\underbrace{E[Y_{i1} - Y_{i0}|Y_{i1}>0]}_{Causal \\ Effect} + \\underbrace{\\{ E[Y_{i0}|Y_{i1}>0 ] - E[Y_{i0}|Y_{i0}>0] \\}}_{选择 \\ 偏差}\n",
    "\\end{align*}\n",
    "$$\n",
    " \n",
    "在我们加减 \\\\(E[Y_{i0}|Y_{i1}>0]\\\\) 之后，第二个等式出现。当我们分解 COP 效应时，我们首先得到对参与者亚群的因果效应。在我们的示例中，这将是对决定花钱的人的因果影响。其次，我们得到一个偏差项，它是那些在分配到治疗时决定参与的人的 \\\\(Y_0\\\\) 差异 (\\\\(E[Y_{i0}|Y_{i1}>0]\\\\ )) 和那些即使没有治疗也参与的人 (\\\\(E[Y_{i0}|Y_{i0}>0]\\\\))。在我们的例子中，这种偏差可能是负的，因为那些在分配到治疗时花费的人，如果他们没有接受治疗，可能会比那些即使没有接受治疗的人花费更少 \\\\(E[Y_{i0}|Y_ {i1}>0] < E[Y_{i0}|Y_{i0}>0]\\\\)。\n",
    "\n",
    "![img](./data/img/beyond-conf/cop.png)\n",
    " \n",
    "现在，我知道 COP 偏差一开始是非常违反直觉的，所以我认为值得通过一个直观的例子。假设我们想估计营销活动如何增加人们在我们产品上的花费。这个营销活动是随机的，所以我们不需要担心混淆。在这个例子中，我们可以将客户分成两个部分。首先，有些人只有在看到营销活动时才会购买我们的产品。让我们称这些客户为节俭的客户。除非我们给他们额外的推动，否则他们不会花钱。还有一些客户即使没有活动也会花钱。该活动使他们花费更多，但无论如何他们已经花费了。让我们称他们为富有的客户。在图中，我用浅色和虚线显示了反事实。\n",
    " \n",
    "![img](./data/img/beyond-conf/cop-ex1.png)\n",
    " \n",
    "为了估计活动的 ATE，因为我们有随机化，我们需要做的就是比较处理过的和未处理过的。但是，假设我们使用 COP 公式，其中我们将估计分解为两个模型，一个估计 \\\\(P(Y_i>0|T_i)\\\\) 的参与模型和估计 \\\\(E[Y_i|Y_i >0]\\\\)。这将从分析中删除所有未花费的人。\n",
    " \n",
    "![img](./data/img/beyond-conf/cop-ex2.png)\n",
    " \n",
    "当我们这样做时，治疗组和对照组不再具有可比性。正如我们所看到的，未经处理的客户现在只包括即使没有活动也会消费的客户群。还要注意，我们甚至可以在这里知道偏差的方向。它将是 \\\\(E[Y_{i0}|Y_{i1}>0] - E[Y_{i0}|Y_{i0}>0]\\\\) 或 \\\\(E[Y_{i0}|\\文本{节俭而富有}] - E[Y_{i0}|Rich]\\\\)。这显然是负面的，因为富人比节俭的顾客花费更多。因此，一旦我们只过滤了参与者群体，我们对 ATE 的估计就会有偏差，即使最初没有由于随机化而产生的偏差。我真诚地希望这能说服您像瘟疫一样避免 COP。我看到太多数据科学家在做这种单独的估算，却没有意识到它带来的问题。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "为了结束选择偏差，我们需要始终提醒自己永远不要控制介于治疗和结果之间的变量，或者是结果和治疗的共同影响。 在图形语言中，以下是不良控制的样子："
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\r\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\r\n",
       "<!-- Generated by graphviz version 2.38.0 (20140413.2041)\r\n",
       " -->\r\n",
       "<!-- Title: %3 Pages: 1 -->\r\n",
       "<svg width=\"89pt\" height=\"260pt\"\r\n",
       " viewBox=\"0.00 0.00 89.00 260.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\r\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 256)\">\r\n",
       "<title>%3</title>\r\n",
       "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-256 85,-256 85,4 -4,4\"/>\r\n",
       "<!-- T -->\r\n",
       "<g id=\"node1\" class=\"node\"><title>T</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"gold\" cx=\"54\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"54\" y=\"-230.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">T</text>\r\n",
       "</g>\r\n",
       "<!-- X_1 -->\r\n",
       "<g id=\"node2\" class=\"node\"><title>X_1</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"red\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X_1</text>\r\n",
       "</g>\r\n",
       "<!-- T&#45;&gt;X_1 -->\r\n",
       "<g id=\"edge1\" class=\"edge\"><title>T&#45;&gt;X_1</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M47.6014,-216.411C44.4864,-208.335 40.6663,-198.431 37.1654,-189.355\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"40.4045,-188.027 33.5403,-179.956 33.8735,-190.546 40.4045,-188.027\"/>\r\n",
       "</g>\r\n",
       "<!-- X_2 -->\r\n",
       "<g id=\"node4\" class=\"node\"><title>X_2</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"red\" cx=\"54\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"54\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X_2</text>\r\n",
       "</g>\r\n",
       "<!-- T&#45;&gt;X_2 -->\r\n",
       "<g id=\"edge3\" class=\"edge\"><title>T&#45;&gt;X_2</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57.6538,-215.908C59.6758,-205.569 61.9808,-192.09 63,-180 67.0322,-132.17 67.0322,-119.83 63,-72 62.2834,-63.4991 60.9311,-54.3119 59.4884,-46.0122\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"62.9142,-45.2892 57.6538,-36.0925 56.0309,-46.5623 62.9142,-45.2892\"/>\r\n",
       "</g>\r\n",
       "<!-- Y -->\r\n",
       "<g id=\"node3\" class=\"node\"><title>Y</title>\r\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\r\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\r\n",
       "</g>\r\n",
       "<!-- X_1&#45;&gt;Y -->\r\n",
       "<g id=\"edge2\" class=\"edge\"><title>X_1&#45;&gt;Y</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M27,-143.697C27,-135.983 27,-126.712 27,-118.112\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"30.5001,-118.104 27,-108.104 23.5001,-118.104 30.5001,-118.104\"/>\r\n",
       "</g>\r\n",
       "<!-- Y&#45;&gt;X_2 -->\r\n",
       "<g id=\"edge4\" class=\"edge\"><title>Y&#45;&gt;X_2</title>\r\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M33.3986,-72.411C36.5136,-64.3352 40.3337,-54.4312 43.8346,-45.3547\"/>\r\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"47.1265,-46.5458 47.4597,-35.9562 40.5955,-44.0267 47.1265,-46.5458\"/>\r\n",
       "</g>\r\n",
       "</g>\r\n",
       "</svg>\r\n"
      ],
      "text/plain": [
       "<graphviz.dot.Digraph at 0x21b2a8d2d48>"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = gr.Digraph()\n",
    "\n",
    "g.edge(\"T\", \"X_1\"), g.node(\"T\", color=\"gold\"), g.edge(\"X_1\", \"Y\"), g.node(\"X_1\", color=\"red\")\n",
    "g.edge(\"T\", \"X_2\"), g.edge(\"Y\", \"X_2\"), g.node(\"X_2\", color=\"red\")\n",
    "\n",
    "g"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 关键思想\n",
    "\n",
    "在本节中，我们查看了不是混杂因素的变量，以及我们是否应该将它们添加到我们的模型中以进行因果识别。 我们已经看到，即使不预测 \\\\(T\\\\)（不是混杂因素），也应该将作为结果 \\\\(y\\\\) 的良好预测变量的变量添加到模型中。 这是因为预测 \\\\(Y\\\\) 会降低其方差，并使我们在估计因果效应时更有可能看到具有统计意义的结果。 接下来，我们已经看到添加预测治疗而不是结果的变量是一个坏主意。 这些变量减少了治疗的可变性，使我们更难找到因果关系。 最后，我们研究了选择偏差。 当我们控制从治疗到结果的因果路径中的变量或作为治疗和结果的共同影响的变量时，就会出现偏差。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
